Large-scale services allow transactions across vast volumes of data and often maintain multiple replicas of data. The underlying resources have finite limits that restrict the amount of data that can be handled in any single transaction. As a result, large-scale services are typically designed with fixed scale units. When the load on a service exceeds the scale unit, additional scale units may be added and the data may be partitioned across multiple scale units. While this allows the service to accommodate increasing volumes of data, transactions can no longer be performed across the data that has been partitioned.
Conventional solutions to this problem include using synchronization mechanisms to reconcile the data, forcing artificial partitioning on the data to fit the scale unit, or abandoning transactions. Synchronization mechanisms are often very complex and having multi-mastering problems. If conflicting edits are made to a document, user intervention is required to resolve the conflict. Because of propagation delays, the conflict might arise after the user has already been given acknowledgement that the transaction was successful and signed out of the service. Accordingly, conflicts may remain unresolved for a long time.
One mechanism to minimize unresolved conflicts is to have an authority responsible for a particular record, but this cannot be handled efficiently when a record is replicated and stored in multiple places. Conventional solutions build an artificial authority on top of the storage replicas using consensus protocols, such as Paxos. However, consensus systems have problems when the nodes in the consensus system are unavailable or cannot communicate due to network outages.
It is with respect to these and other considerations that the present invention has been made. Although relatively specific problems have been discussed, it should be understood that the embodiments disclosed herein should not be limited to solving the specific problems identified in the background.